object NilAndNone {
  def main(args: Array[String]): Unit = {
    import scala.collection.immutable.Nil
//    println(Nil.length) //List()  List[Nothing]

    //option演示
//    val s1:Option[Int] = scala.util.Try("12345abc".toInt).toOption  //能转还是不能转
//    val s2:Option[Int] = scala.util.Try("12345".toInt).toOption  //能转还是不能转
//    println(s1.getOrElse("failure")) //获取不到值的时候使用给定的默认值返回
//    println(s2.get)

    // Option -> 执行成功会返回Some  执行失败返回的是None

//    val s3:String = null  //不建议这样写
//    var s4:Option[String]= None //建议
//    s4 = Some("jack")
////    val s5:Option[String] = Some("jack")
//    s4 match {
//      case Some("jack") =>println(s4.get)
//      case _ => println("No value")
//    }

//    println(getAStringMaybe(-1))
//    printResult(123)
//    printResult(-123)

  }

  //Option的返回值只有两种，Some和None
  def getAStringMaybe(num:Int):Option[String] = {
    if (num > 0) Some("是一个整数")
    else None
  }

  def printResult(num:Int) = {
    getAStringMaybe(num) match {
      case Some(str) => println(str)
      case None => println("No String")
    }
  }
}
